package com.gobang.domain.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import java.io.Serializable;

/**
 * 积分更新请求数据传输对象
 * 用于游戏结束后更新用户积分的请求参数
 * 
 * @author System
 * @since 1.0.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScoreUpdateRequestDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不能为空")
    private Long userId;

    /**
     * 对手ID
     */
    @NotNull(message = "对手ID不能为空")
    private Long opponentId;

    /**
     * 房间ID
     */
    @NotBlank(message = "房间ID不能为空")
    private String roomId;

    /**
     * 游戏结果（WIN/LOSE）
     */
    @NotBlank(message = "游戏结果不能为空")
    @Pattern(regexp = "^(WIN|LOSE)$", message = "游戏结果只能是WIN或LOSE")
    private String gameResult;

    /**
     * 积分变化
     */
    @NotNull(message = "积分变化不能为空")
    private Integer scoreChange;
} 